home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 …ember: Reference Library / Apple Developer Reference Library (December 1999) (Disk 1).iso / pc / technical documentation / develop / develop issue 24 / develop issue 24 code / scriptable database 1.0a15.sea / Scriptable Database 1.0a15 / Foundation / AbstractProperty.cp / AbstractProperty.cp
Encoding:
Text File  |  1996-02-20  |  7.3 KB  |  166 lines  |  [TEXT/CWIE]

  1.  
  2. #include "AbstractProperty.h"
  3. #include "Exceptions.h"
  4.  
  5. #include <AppleEvents.h>
  6. #include <AERegistry.h>
  7. #include <ASRegistry.h>
  8.  
  9. //========================================================================================
  10. // CLASS TAbstractProperty
  11. //========================================================================================
  12.  
  13. #pragma segment ObjectResident
  14. ImplementSmallClassData(TAbstractProperty, clProperty);
  15.  
  16. #pragma segment Foundation
  17.  
  18. //----------------------------------------------------------------------------------------
  19. // TAbstractProperty::~TAbstractProperty: 
  20. //----------------------------------------------------------------------------------------
  21. TAbstractProperty::~TAbstractProperty()
  22.     {
  23.     } // TAbstractProperty::~TAbstractProperty 
  24.  
  25. //----------------------------------------------------------------------------------------
  26. // TAbstractProperty::IAbstractProperty: 
  27. //----------------------------------------------------------------------------------------
  28. void TAbstractProperty::IAbstractProperty(TAbstractScriptableObject* objectOfDesignation, DescType propertyIdentifier)
  29.     {
  30.     fPropertyIdentifier = propertyIdentifier;
  31.     
  32.     TAbstractDesignator::IAbstractDesignator(objectOfDesignation);
  33.     } // TAbstractProperty::IAbstractPropert 
  34.  
  35. //----------------------------------------------------------------------------------------
  36. // TAbstractProperty::ObjectClass: 
  37. //
  38. // The object class of properties is always the default type of said property
  39. //----------------------------------------------------------------------------------------
  40. DescType TAbstractProperty::ObjectClass(const TAETransaction& t, Boolean recordedClass /*= false*/)
  41.     {
  42.     if(recordedClass)
  43.         return cProperty;
  44.     else
  45.         return this->DefaultType(t, pContents);
  46.     } // TAbstractProperty::ObjectClass 
  47.  
  48. //----------------------------------------------------------------------------------------
  49. // TAbstractProperty::DerivedFromOSLClass: 
  50. //----------------------------------------------------------------------------------------
  51. Boolean TAbstractProperty::DerivedFromOSLClass(const TAETransaction& t, DescType objectClass)
  52.     {
  53.     return ((objectClass == cProperty) || (TAbstractDesignator::DerivedFromOSLClass(t, objectClass)));
  54.     } // TAbstractProperty::DerivedFromOSLClass 
  55.  
  56. //----------------------------------------------------------------------------------------
  57. // TAbstractProperty::PropertyIdentifier: 
  58. //----------------------------------------------------------------------------------------
  59. DescType TAbstractProperty::PropertyIdentifier()
  60.     {
  61.     return fPropertyIdentifier;
  62.     } // TAbstractProperty::PropertyIdentifier 
  63.  
  64. //----------------------------------------------------------------------------------------
  65. // TAbstractProperty::MakeKeyDataForSelf: 
  66. //----------------------------------------------------------------------------------------
  67. void TAbstractProperty::MakeKeyDataForSelf(const TAETransaction&, DescType& keyForm, TDescriptor& keyData)
  68.     {
  69.     keyForm = formPropertyID;
  70.     keyData.SetDescTypeData(this->PropertyIdentifier());
  71.     } // TAbstractProperty::MakeKeyDataForSelf 
  72.  
  73. //----------------------------------------------------------------------------------------
  74. // TAbstractProperty::ElementIterator: 
  75. //----------------------------------------------------------------------------------------
  76. TAbstractObjectIterator* TAbstractProperty::ElementIterator(const TAETransaction&)
  77.     {
  78.     FailErr(errAENoSuchObject);
  79.     return nil;
  80.     } // TAbstractProperty::ElementIterator 
  81.  
  82.  
  83. //========================================================================================
  84. // CLASS TGenericProperty
  85. //========================================================================================
  86.  
  87. #pragma segment ObjectResident
  88. ImplementSmallClassData(TGenericProperty, clGenericProperty);
  89.  
  90. #pragma segment Foundation
  91.  
  92. //----------------------------------------------------------------------------------------
  93. // TGenericProperty::~TGenericProperty: 
  94. //----------------------------------------------------------------------------------------
  95. TGenericProperty::~TGenericProperty()
  96.     {
  97.     } // TGenericProperty::~TGenericProperty 
  98.  
  99. //----------------------------------------------------------------------------------------
  100. // TGenericProperty::IGenericProperty: 
  101. //----------------------------------------------------------------------------------------
  102. void TGenericProperty::IGenericProperty(TAbstractScriptableObject* objectOfDesignation, const TPropertyDataDescription& propertyDescription)
  103.     {
  104.     fAdditionalInfo = propertyDescription.AdditionalInfo();
  105.         
  106.     TAbstractProperty::IAbstractProperty(objectOfDesignation, propertyDescription.PropertyIdentifier());
  107.     } // TGenericProperty::IGenericProperty 
  108.  
  109. //----------------------------------------------------------------------------------------
  110. // TGenericProperty::BestType: 
  111. //----------------------------------------------------------------------------------------
  112. DescType TGenericProperty::BestType(const TAETransaction& t, DescType propertyName)
  113.     {
  114.     if(propertyName == pContents)
  115.         return ObjectOfDesignation()->BestType(t, PropertyIdentifier());
  116.     else
  117.         return Inherited::BestType(t, propertyName);
  118.     } // TGenericProperty::BestType 
  119.  
  120. //----------------------------------------------------------------------------------------
  121. // TGenericProperty::DefaultType: 
  122. //----------------------------------------------------------------------------------------
  123. DescType TGenericProperty::DefaultType(const TAETransaction& t, DescType propertyName)
  124.     {
  125.     if(propertyName == pContents)
  126.         return ObjectOfDesignation()->DefaultType(t, PropertyIdentifier());
  127.     else
  128.         return Inherited::DefaultType(t, propertyName);
  129.     } // TGenericProperty::DefaultType 
  130.  
  131. //----------------------------------------------------------------------------------------
  132. // TGenericProperty::CanReturnDataOfType: 
  133. //----------------------------------------------------------------------------------------
  134. Boolean TGenericProperty::CanReturnDataOfType(const TAETransaction& t, DescType propertyName, DescType desiredType)
  135.     {
  136.     if(propertyName != pContents)
  137.         return Inherited::CanReturnDataOfType(t, propertyName, desiredType);
  138.     if(desiredType == 0)
  139.         return false;
  140.     
  141.     return ObjectOfDesignation()->CanReturnDataOfType(t, PropertyIdentifier(), desiredType);
  142.     } // TGenericProperty::CanReturnDataOfType 
  143.  
  144. //----------------------------------------------------------------------------------------
  145. // TGenericProperty::GetProperty: 
  146. //----------------------------------------------------------------------------------------
  147. TDescriptor TGenericProperty::GetProperty(const TAETransaction& t, DescType propertyName, DescType requestedType, unsigned long additionalInfo)
  148.     {
  149.     if(propertyName == pContents)
  150.         return ObjectOfDesignation()->GetProperty(t, PropertyIdentifier(), requestedType, fAdditionalInfo);
  151.     else
  152.         return Inherited::GetProperty(t, propertyName, requestedType, additionalInfo);
  153.     } // TGenericProperty::GetProperty 
  154.  
  155. //----------------------------------------------------------------------------------------
  156. // TGenericProperty::SetProperty: 
  157. //----------------------------------------------------------------------------------------
  158. void TGenericProperty::SetProperty(const TAETransaction& t, DescType propertyName, TDescriptor& keyData, unsigned long additionalInfo)
  159.     {
  160.     if(propertyName == pContents)
  161.         ObjectOfDesignation()->SetProperty(t, PropertyIdentifier(), keyData, fAdditionalInfo);
  162.     else
  163.         Inherited::SetProperty(t, propertyName, keyData, additionalInfo);
  164.     } // TGenericProperty::SetProperty 
  165.     
  166.